

Imports System.Data.SqlClient
Imports ModuloAdministraciondeEnvios.Entity
Imports ModuloAdministraciondeEnvios.BusinessLogicLayer

Namespace DataAccessLayer

    Public Class DataEnvio

        Inherits Envio
        Implements IEnvio

        Public Function AgregarEnvio(ByVal Envio1 As Envio) As Boolean Implements IEnvio.AgregarEnvio

            IdEnvio = Envio1.IdEnvio
            Fecha = Envio1.Fecha
            Remitente = Envio1.Remitente
            Destinatario = Envio1.Destinatario
            Movil = Envio1.Movil
            TipoDePago = Envio1.TipoDePago
            TipoDeEnvio = Envio1.TipoDeEnvio
            ImporteEnvio = Envio1.ImporteEnvio
            ImporteContrareembolso = Envio1.ImporteContrareembolso
            CantidadDePaquetes = Envio1.CantidadDePaquetes
            UltimoEstado = Envio1.UltimoEstado


            Try

                Dim Conecta As New SqlConnection(StringConecta)
                Conecta.Open()
                Comando = New SqlCommand(StringComando, Conecta)

                Comando.CommandText = "Envio_Agregar"
                Comando.CommandType = CommandType.StoredProcedure

                Comando.Parameters.Add("@IdEnvio", SqlDbType.Int, 4, "IdEnvio").Value = IdEnvio
                Comando.Parameters.Add("@Fecha", SqlDbType.Date, 6, "Fecha").Value = Fecha
                Comando.Parameters.Add("@Remitente", SqlDbType.Int, 4, "Remitente").Value = Remitente
                Comando.Parameters.Add("@Destinatario", SqlDbType.Int, 4, "Destinatario").Value = Destinatario
                Comando.Parameters.Add("@Movil", SqlDbType.Int, 4, "Movil").Value = Movil
                Comando.Parameters.Add("@TipoDePago", SqlDbType.Int, 4, "TipoDePago").Value = TipoDePago
                Comando.Parameters.Add("@TipoDeEnvio", SqlDbType.Int, 4, "TipoDeEnvio").Value = TipoDeEnvio
                Comando.Parameters.Add("@ImporteEnvio", SqlDbType.Decimal, 6, "ImporteEnvio").Value = ImporteEnvio
                Comando.Parameters.Add("@ImporteContrareembolso", SqlDbType.Decimal, 6, "ImporteContrareembolso").Value = ImporteContrareembolso
                Comando.Parameters.Add("@CantidadDePaquetes", SqlDbType.Int, 4, "CantidadDePaquetes").Value = CantidadDePaquetes
                Comando.Parameters.Add("@UltimoEstado", SqlDbType.Int, 4, "UltimoEstado").Value = UltimoEstado

                Comando.ExecuteNonQuery()

                MsgBox("Registro Grabado con Exito")

                Conecta.Close()
                Conecta.Dispose()

                Return True

            Catch ex As Exception

                MsgBox(ex.Message)

                Return False

            End Try


        End Function
        Public Function AgregarEnvio(ByVal IdEnvio, ByVal Fecha, ByVal Remitente, ByVal Destinatario, ByVal Movil, ByVal TipoDePago, ByVal TipoDeEnvio, ByVal ImporteEnvio, ByVal ImporteContrareembolso, ByVal CantidadDePaquetes, ByVal UltimoEstado) As Boolean Implements IEnvio.AgregarEnvio

            Try

                Dim Conecta As New SqlConnection(StringConecta)
                Conecta.Open()
                Comando = New SqlCommand(StringComando, Conecta)
                Comando.CommandText = "Envio_Agregar"
                Comando.CommandType = CommandType.StoredProcedure

                Comando.Parameters.Add("@IdEnvio", SqlDbType.Int, 4, "IdEnvio").Value = ""
                Comando.Parameters.Add("@Fecha", SqlDbType.VarChar, 6, "Fecha").Value = ""
                Comando.Parameters.Add("@Remitente", SqlDbType.Int, 4, "Remitente").Value = ""
                Comando.Parameters.Add("@Destinatario", SqlDbType.Int, 4, "Destinatario").Value = ""
                Comando.Parameters.Add("@Movil", SqlDbType.Int, 4, "Movil").Value = ""
                Comando.Parameters.Add("@TipoDePago", SqlDbType.Int, 4, "TipoDePago").Value = ""
                Comando.Parameters.Add("@TipoDeEnvio", SqlDbType.Int, 4, "TipoDeEnvio").Value = ""
                Comando.Parameters.Add("@ImporteEnvio", SqlDbType.Decimal, 6, "ImporteEnvio").Value = ""
                Comando.Parameters.Add("@ImporteContrareembolso", SqlDbType.Decimal, 6, "ImporteContrareembolso").Value = ""
                Comando.Parameters.Add("@CantidadDePaquetes", SqlDbType.Int, 4, "CantidadDePaquetes").Value = ""
                Comando.Parameters.Add("@UltimoEstado", SqlDbType.Int, 4, "UltimoEstado").Value = ""

                Comando.ExecuteNonQuery()

                Conecta.Close()
                Conecta.Dispose()

                Return True

            Catch ex As Exception

                MsgBox(ex.Message.ToString)

                Return False
            End Try

        End Function
        Public Function TraerEnvio(ByVal n As Integer) As Envio Implements IEnvio.TraerEnvio

            Try


                Dim Conecta As New SqlConnection(StringConecta)
                Comando = New SqlCommand(StringComando, Conecta)
                Conecta.Open()
                Comando.CommandText = "Envio_SelectRow"
                Comando.CommandType = CommandType.StoredProcedure

                Comando.Parameters.Add("@IdEnvio", SqlDbType.Int, 4, "IdEnvio").Value = n
                Comando.ExecuteNonQuery()

                Dim Adapter As SqlDataAdapter = New SqlDataAdapter(Comando)
                Dim Ds As DataSet = New DataSet(Comando.CommandText)

                Adapter.Fill(Ds)

                Dim EnvioDevuelto As New Envio

                EnvioDevuelto.IdEnvio = Ds.Tables(0).Rows(0).Item(0)
                EnvioDevuelto.Fecha = Ds.Tables(0).Rows(0).Item(1)
                EnvioDevuelto.Remitente = Ds.Tables(0).Rows(0).Item(2)
                EnvioDevuelto.Destinatario = Ds.Tables(0).Rows(0).Item(3)
                EnvioDevuelto.Movil = Ds.Tables(0).Rows(0).Item(4)
                EnvioDevuelto.TipoDePago = Ds.Tables(0).Rows(0).Item(5)
                EnvioDevuelto.TipoDeEnvio = Ds.Tables(0).Rows(0).Item(6)
                EnvioDevuelto.ImporteEnvio = Ds.Tables(0).Rows(0).Item(7)
                EnvioDevuelto.ImporteContrareembolso = Ds.Tables(0).Rows(0).Item(8)
                EnvioDevuelto.CantidadDePaquetes = Ds.Tables(0).Rows(0).Item(9)
                EnvioDevuelto.UltimoEstado = Ds.Tables(0).Rows(0).Item(10)



                Return EnvioDevuelto





            Catch ex As Exception

                MsgBox("No pudo por que " & ex.Message)

                Dim EnvioDevuelto As New Envio
                Return EnvioDevuelto

            End Try




        End Function
        Public Function TraerEnviosTodosRegistros() As DataSet Implements IEnvio.TraerEnviosTodosRegistros

            Try

                Dim Conecta As New SqlConnection(StringConecta)
                Comando = New SqlCommand(StringComando, Conecta)
                Comando.CommandText = "Envio_SelectAll"
                Comando.CommandType = CommandType.StoredProcedure

                Dim Adapter As SqlDataAdapter = New SqlDataAdapter(Comando)
                Dim Ds As DataSet = New DataSet(Comando.CommandText)

                Adapter.Fill(Ds)

                Return Ds

            Catch ex As Exception

                MsgBox("No pudo por que " & ex.Message)

                Return Ds

            End Try



        End Function
        Public Function TraerEnviosPorFechas(ByVal FechaInicial As Date, ByVal FechaTerminal As Date) As DataSet Implements IEnvio.TraerEnviosPorFechas


            Try

                Dim Conecta As New SqlConnection(StringConecta)
                Comando = New SqlCommand(StringComando, Conecta)
                Comando.CommandText = "Envio_SelectRow_Por_Fechas"
                Comando.CommandType = CommandType.StoredProcedure


                Dim FechaInicio As SqlParameter = New SqlParameter("@FechaInicio", FechaInicial)
                FechaInicio.Direction = ParameterDirection.Input
                FechaInicio.DbType = DbType.Date

                Dim FechaTermino As SqlParameter = New SqlParameter("@FechaTermino", FechaTerminal)
                FechaTermino.Direction = ParameterDirection.Input
                FechaTermino.DbType = DbType.Date

                Comando.Parameters.Add(FechaInicio)
                Comando.Parameters.Add(FechaTermino)

                Dim Adapter As SqlDataAdapter = New SqlDataAdapter(Comando)
                Dim Ds As DataSet = New DataSet(Comando.CommandText)

                Adapter.Fill(Ds)

                Return Ds

            Catch ex As Exception

                MsgBox("No pudo por que " & ex.Message)

                Return Ds

            End Try



        End Function
        Public Function BorrarEnvio(ByVal n As Integer) As Boolean Implements IEnvio.BorrarEnvio


            Try

                Dim Conecta As New SqlConnection(StringConecta)
                Conecta.Open()
                Comando = New SqlCommand(StringComando, Conecta)
                Comando.CommandText = "Envio_DeleteRow"
                Comando.CommandType = CommandType.StoredProcedure
                Comando.Parameters.Add("@IdEnvio", SqlDbType.Int, 4, "IdEnvio").Value = n
                Comando.ExecuteNonQuery()
                Conecta.Close()
                Conecta.Dispose()

                MsgBox("Borrado Registro " & n, MsgBoxStyle.Critical)

                Return True

            Catch ex As Exception

                MsgBox("No pudo por que " & ex.Message)
                Return False

            End Try



        End Function
        Public Function ModificarEnvio(ByVal n As Integer, ByVal EnvioModificar As Envio) As Boolean Implements IEnvio.Modificar

            IdEnvio = n
            Fecha = EnvioModificar.Fecha
            Remitente = EnvioModificar.Remitente
            Destinatario = EnvioModificar.Destinatario
            Movil = EnvioModificar.Movil
            TipoDePago = EnvioModificar.TipoDePago
            TipoDeEnvio = EnvioModificar.TipoDeEnvio
            ImporteEnvio = EnvioModificar.ImporteEnvio
            ImporteContrareembolso = EnvioModificar.ImporteContrareembolso
            CantidadDePaquetes = EnvioModificar.CantidadDePaquetes
            UltimoEstado = EnvioModificar.UltimoEstado

            Try
                Dim Conecta As New SqlConnection(StringConecta)
                Conecta.Open()
                Comando = New SqlCommand(StringComando, Conecta)
                Comando.CommandText = "Envio_Update"
                Comando.CommandType = CommandType.StoredProcedure

                Comando.Parameters.Add("@IdEnvio", SqlDbType.Int, 4, "IdEnvio").Value = IdEnvio
                Comando.Parameters.Add("@Fecha", SqlDbType.Date, 6, "Fecha").Value = Fecha
                Comando.Parameters.Add("@Remitente", SqlDbType.Int, 4, "Remitente").Value = Remitente
                Comando.Parameters.Add("@Destinatario", SqlDbType.Int, 4, "Destinatario").Value = Destinatario
                Comando.Parameters.Add("@Movil", SqlDbType.Int, 4, "Movil").Value = Movil
                Comando.Parameters.Add("@TipoDePago", SqlDbType.Int, 4, "TipoDePago").Value = TipoDePago
                Comando.Parameters.Add("@TipoDeEnvio", SqlDbType.Int, 4, "TipoDeEnvio").Value = TipoDeEnvio
                Comando.Parameters.Add("@ImporteEnvio", SqlDbType.Decimal, 6, "ImporteEnvio").Value = ImporteEnvio
                Comando.Parameters.Add("@ImporteContrareembolso", SqlDbType.Decimal, 6, "ImporteContrareembolso").Value = ImporteContrareembolso
                Comando.Parameters.Add("@CantidadDePaquetes", SqlDbType.Int, 4, "CantidadDePaquetes").Value = CantidadDePaquetes
                Comando.Parameters.Add("@UltimoEstado", SqlDbType.Int, 4, "UltimoEstado").Value = UltimoEstado

                Comando.ExecuteNonQuery()

                Conecta.Close()
                Conecta.Dispose()

                Return True

            Catch ex As Exception

                MsgBox("No pudo por que " & ex.Message)
                Return False

            End Try

        End Function


        Public Function TraerEnviosCompletosPorFechas(ByVal FechaInicial As Date, ByVal FechaTerminal As Date, ByVal Estado As Integer) As DataSet Implements IEnvio.TraerEnviosCompletosPorFechas

            Try

                Dim Conecta As New SqlConnection(StringConecta)
                Comando = New SqlCommand(StringComando, Conecta)
                Comando.CommandText = "Envio_SelectRow_Informe_Por_Fechas"
                Comando.CommandType = CommandType.StoredProcedure

                Dim FechaInicio As SqlParameter = New SqlParameter("@FechaInicio", FechaInicial)
                FechaInicio.Direction = ParameterDirection.Input
                FechaInicio.DbType = DbType.Date

                Dim FechaTermino As SqlParameter = New SqlParameter("@FechaTermino", FechaTerminal)
                FechaTermino.Direction = ParameterDirection.Input
                FechaTermino.DbType = DbType.Date

                Dim EstadoListado As SqlParameter = New SqlParameter("@Estado", Estado)
                EstadoListado.Direction = ParameterDirection.Input
                EstadoListado.DbType = DbType.Int16



                Comando.Parameters.Add(FechaInicio)
                Comando.Parameters.Add(FechaTermino)
                Comando.Parameters.Add(EstadoListado)

                Dim Adapter As SqlDataAdapter = New SqlDataAdapter(Comando)
                Dim Ds As DataSet = New DataSet(Comando.CommandText)

                Adapter.Fill(Ds)

                Return Ds

            Catch ex As Exception

                MsgBox("No pudo por que " & ex.Message)

                Return Ds

            End Try





        End Function

    End Class

End Namespace